package com.unlp.javaclickers.alumno.vistas;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;

import org.apache.log4j.Logger;

public class Parameters {
	private Socket socket;
	private ObjectOutputStream oos;
	private ObjectInputStream ois;
	private ResponderPreguntaAlumno responderPreguntaAlumno = null;
	private MainAlumno mainAlumno;
	private int tiempo;
	private static Logger LOGGER = Logger.getLogger(Parameters.class);

	public Parameters(String ip, MainAlumno ma) {
		try {
			mainAlumno = ma;
			socket = new Socket(ip, 9900);
			oos = new ObjectOutputStream(socket.getOutputStream());
			ois = new ObjectInputStream(socket.getInputStream());
			mainAlumno.setOkConexion(true);
		} catch (UnknownHostException e) {
			mainAlumno.setOkConexion(false);
			mainAlumno.NotificarConexion("Error host no conocido");
			LOGGER.error(e.getMessage(), e);
		} catch (IOException e) {
			mainAlumno.setOkConexion(false);
			mainAlumno.NotificarConexion("Error en la conexion");
			LOGGER.error(e.getMessage(), e);
		}
	}

	public void cerrarConexiones() {
		try {
			oos.close();
			ois.close();
			socket.close();
		} catch (IOException e) {
			LOGGER.error(e.getMessage(), e);
		}
	}
	

	public Socket getSocket() {
		return socket;
	}

	public void setSocket(Socket socket) {
		this.socket = socket;
	}

	public ObjectOutputStream getOos() {
		return oos;
	}

	public void setOos(ObjectOutputStream oos) {
		this.oos = oos;
	}

	public ObjectInputStream getOis() {
		return ois;
	}

	public void setOis(ObjectInputStream ois) {
		this.ois = ois;
	}

	public int getTiempo() {
		return tiempo;
	}

	public void setTiempo(int tiempo) {
		this.tiempo = tiempo;
		try {
			socket.setSoTimeout((tiempo * 10000)+20000);
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public ResponderPreguntaAlumno getResponderPreguntaAlumno() {
		return responderPreguntaAlumno;
	}

	public void setResponderPreguntaAlumno(
			ResponderPreguntaAlumno responderPreguntaAlumno) {
		this.responderPreguntaAlumno = responderPreguntaAlumno;
	}

	public MainAlumno getMainAlumno() {
		return mainAlumno;
	}

	public void setMainAlumno(MainAlumno mainAlumno) {
		this.mainAlumno = mainAlumno;
	}

}
